<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Generatot</title>
</head>
<body>
    <script>
        function getData(str){
            return new Promise(function(reslove, reject){
                reslove(str);
            })
        };
        function * a(){
            let data = yield getData('First');
            console.log(data);
            let data2 = yield getData('Second');
            console.log(data2);
            let data3 = yield getData('Third');
            console.log(data3);
        }
        // var f = a();
        // // console.log(f);
        // // f.then(res => {
        // //     console.log(res);
        // // })
        // var f1 = f.next();
        // // console.log(f1);
        // f1.value.then(res => {
        //     // console.log(res);
        //     var v = f.next(res);
        //     v.value.then(res => {

        //     })
        // })
        // f.next();

        // f.next();

        function runGenerator(generatorFn){
            var startFn = generatorFn();
            // return function (params) {
                return new Promise(function(reslove, reject) {
                    // let v = startFn.next();
                    function step(val){
                        var v = startFn.next(val);
                        if(v.done){
                            reslove('success')
                        }else{
                            v.value.then(
                                res => {
                                    step(res);
                                }
                            )
                        }
                    }
                    step();
                })
            // }   
        }
        runGenerator(a).then(res => {
            console.log(res);
        })

        
    </script>
</body>
</html>